🔍 API de Consultas - Documentação Completa
📋 Visão Geral
A API de Consultas é responsável por fornecer consultas estruturadas e otimizadas para diferentes aspectos do sistema CordenaAi, incluindo hierarquia organizacional (instituições, unidades, turmas), informações completas de usuários com suas funções, e relacionamentos entre responsáveis e atletas. Esta API fornece dados agregados e relacionamentos complexos de forma eficiente, facilitando a construção de dashboards, relatórios e interfaces administrativas.
🎯 Endpoints Disponíveis
🔍 Consultas - Consultas Estruturadas do Sistema
1. GET /api/Consultas/instituicoes-com-unidades
Obter Instituições com Unidades
- Descrição: Retorna todas as instituições cadastradas com suas respectivas unidades e informações de turmas
- Método: GET
- Autenticação: Requerida (JWT Bearer Token)
- Parâmetros: Nenhum
- Resposta: Array de objetos InstituicaoCompletaDto
- Uso: Dashboard administrativo, estrutura organizacional, relatórios hierárquicos
2. GET /api/Consultas/unidades-com-turmas
Obter Unidades com Turmas
- Descrição: Retorna todas as unidades cadastradas com sua instituição pai e turmas associadas
- Método: GET
- Autenticação: Requerida (JWT Bearer Token)
- Parâmetros: Nenhum
- Resposta: Array de objetos UnidadeCompletaDto
- Uso: Gestão de unidades, visualização de estrutura de turmas, relatórios por unidade
3. GET /api/Consultas/turmas/{turmaId}/completa
Obter Turma Completa
- Descrição: Retorna uma turma específica com professor responsável, unidade e lista de alunos/atletas
- Método: GET
- Autenticação: Requerida (JWT Bearer Token)
- Parâmetros:
turmaId (path): ID único da turma
- Resposta: Objeto TurmaCompletaDto
- Uso: Visualização detalhada de turma, gestão de alunos, relatórios de turma
4. GET /api/Consultas/usuarios-com-funcoes
Obter Usuários com Funções
- Descrição: Retorna todos os usuários cadastrados com suas funções detalhadas (responsável, turma)
- Método: GET
- Autenticação: Requerida (JWT Bearer Token)
- Parâmetros: Nenhum
- Resposta: Array de objetos UsuarioCompletoDto
- Uso: Dashboard de usuários, relatórios de funções, auditoria de permissões
5. GET /api/Consultas/usuarios/{identificador}/completo
Obter Usuário Completo
- Descrição: Retorna um usuário específico com suas informações completas e funções
- Método: GET
- Autenticação: Requerida (JWT Bearer Token)
- Parâmetros:
identificador (path): ID, email, CPF ou username do usuário
- Resposta: Objeto UsuarioCompletoDto
- Uso: Perfil detalhado de usuário, verificação de funções, auditoria individual
6. GET /api/Consultas/responsaveis-com-atletas
Obter Responsáveis com Atletas
- Descrição: Retorna todos os responsáveis que possuem atletas vinculados com informações detalhadas
- Método: GET
- Autenticação: Requerida (JWT Bearer Token)
- Parâmetros: Nenhum
- Resposta: Array de objetos ResponsavelCompletoDto
- Uso: Gestão de responsáveis, relatórios de vínculos, comunicação com responsáveis
🔧 Modelo de Dados
Estrutura de Instituição Completa
{
"id": "integer",
"descricao": "string",
"local": "string",
"tipo": "TipoInstituicao",
"unidades": [
{
"id": "integer",
"nome": "string",
"local": "string",
"tipo": "TipoUnidade",
"quantidadeTurmas": "integer"
}
],
"dataCadastro": "datetime",
"dataAtualizacao": "datetime"
}
Estrutura de Unidade Completa
{
"id": "integer",
"nome": "string",
"local": "string",
"tipo": "TipoUnidade",
"instituicao": {
"id": "integer",
"descricao": "string",
"local": "string"
},
"turmas": [
{
"id": "integer",
"nome": "string",
"status": "StatusTurma",
"responsavelId": "string",
"responsavelNome": "string"
}
],
"dataCadastro": "datetime",
"dataAtualizacao": "datetime"
}
Estrutura de Turma Completa
{
"id": "integer",
"nome": "string",
"status": "StatusTurma",
"unidade": {
"id": "integer",
"nome": "string",
"local": "string",
"tipo": "TipoUnidade"
},
"professor": {
"id": "string",
"nome": "string",
"nomeSocial": "string",
"email": "string",
"userName": "string"
},
"alunos": [
{
"id": "string",
"nome": "string",
"nomeSocial": "string",
"email": "string",
"userName": "string",
"papelNaTurma": "PapelNaTurma"
}
],
"dataCadastro": "datetime",
"dataAtualizacao": "datetime"
}
Estrutura de Usuário Completo
{
"id": "string",
"userName": "string",
"nome": "string",
"nomeSocial": "string",
"email": "string",
"cpf": "string",
"celular": "string",
"dataNascimento": "datetime",
"genero": "string",
"status": "boolean",
"funcoes": [
{
"tipo": "string",
"relacao": "string",
"usuarioRelacionado": "string",
"turma": "string",
"dataCadastro": "datetime"
}
],
"dataCadastro": "datetime",
"dataAtualizacao": "datetime"
}
Estrutura de Responsável Completo
{
"id": "string",
"nome": "string",
"email": "string",
"userName": "string",
"status": "boolean",
"atletas": [
{
"id": "string",
"nome": "string",
"relacao": "string",
"dataCadastro": "datetime"
}
],
"funcoes": [
{
"tipo": "string",
"relacao": "string",
"turma": "string",
"dataCadastro": "datetime"
}
]
}
🔐 Autenticação e Autorização
Todos os endpoints requerem:
- JWT Bearer Token no header
Authorization
- Permissões específicas baseadas no tipo de usuário:
- Administradores: Acesso completo a todas as consultas
- Coordenadores: Acesso a consultas de suas unidades/turmas
- Professores: Acesso limitado às suas turmas e alunos
- Responsáveis: Acesso apenas aos seus atletas
📊 Casos de Uso Principais
1. Dashboard Administrativo
GET /api/Consultas/instituicoes-com-unidades
Authorization: Bearer {token}
2. Gestão de Unidades
GET /api/Consultas/unidades-com-turmas
Authorization: Bearer {token}
3. Visualização de Turma
GET /api/Consultas/turmas/123/completa
Authorization: Bearer {token}
4. Relatório de Usuários
GET /api/Consultas/usuarios-com-funcoes
Authorization: Bearer {token}
5. Perfil de Usuário
GET /api/Consultas/usuarios/[email protected]/completo
Authorization: Bearer {token}
6. Gestão de Responsáveis
GET /api/Consultas/responsaveis-com-atletas
Authorization: Bearer {token}
⚠️ Validações e Regras de Negócio
Validações Obrigatórias
- Identificadores: Suporte a ID (GUID), email, CPF e username
- Turma ID: Deve existir no sistema
- Usuário: Deve estar ativo no sistema
- Permissões: Validação de acesso baseada em roles
Regras de Negócio
- Hierarquia: Instituição → Unidade → Turma → Usuários
- Funções: Usuários podem ter múltiplas funções (responsável + turma)
- Status: Apenas usuários ativos são retornados
- Relacionamentos: Validação de vínculos existentes
- Auditoria: Todas as consultas são logadas
🚨 Tratamento de Erros
Códigos de Status HTTP
- 200: Sucesso
- 400: Dados inválidos ou erro na consulta
- 401: Não autorizado
- 403: Acesso negado
- 404: Recurso não encontrado (turma, usuário)
- 500: Erro interno do servidor
Formato de Erro
{
"error": "string",
"message": "string",
"details": "string",
"timestamp": "datetime"
}
📈 Performance e Limitações
Limitações
- Paginação: Consultas retornam todos os registros (sem paginação)
- Rate Limiting: 500 requests por hora por usuário
- Timeout: 60 segundos por requisição
- Cache: Dados são cacheados por 10 minutos
Otimizações
- Índices: Consultas otimizadas com índices de banco
- Joins: Uso de Include() para carregar relacionamentos
- Compressão: Respostas comprimidas com gzip
- Lazy Loading: Carregamento sob demanda de relacionamentos
🔄 Integração com Outros Módulos
Módulos Relacionados
- Instituições: Base para consultas hierárquicas
- Unidades: Estrutura organizacional
- Turmas: Agrupamento de usuários
- Usuários: Dados pessoais e funções
- Relacionamentos: Vínculos entre usuários
- Autenticação: Validação de permissões
📱 Uso em Aplicações
Web App
- Dashboard administrativo
- Relatórios hierárquicos
- Gestão de usuários e funções
- Visualização de estrutura organizacional
Mobile App
- Consulta de turmas do usuário
- Visualização de responsáveis e atletas
- Perfil detalhado do usuário
- Relatórios de funções
🛠️ Manutenção e Monitoramento
Logs Importantes
- Consultas de estrutura organizacional
- Acessos a dados de usuários
- Tentativas de acesso não autorizado
- Erros de validação de identificadores
Métricas Monitoradas
- Número de consultas por endpoint
- Tempo de resposta das consultas
- Uso de cache
- Taxa de erro por tipo de consulta
📚 Exemplos Práticos
Fluxo de Consulta Hierárquica
- GET /api/Consultas/instituicoes-com-unidades para estrutura geral
- GET /api/Consultas/unidades-com-turmas para detalhes de unidades
- GET /api/Consultas/turmas/{id}/completa para turma específica
Fluxo de Consulta de Usuário
- GET /api/Consultas/usuarios/{identificador}/completo para dados do usuário
- Verificação de funções e relacionamentos
- Exibição de informações completas
Fluxo de Gestão de Responsáveis
- GET /api/Consultas/responsaveis-com-atletas para lista de responsáveis
- Visualização de atletas vinculados
- Gestão de relacionamentos
🎯 Tipos e Enums
TipoInstituicao
- Matriz (1): Instituição principal
- Filial (2): Instituição secundária
TipoUnidade
- Matriz (1): Unidade principal
- Filial (2): Unidade secundária
StatusTurma
- Ativa (1): Turma em funcionamento
- Inativa (2): Turma desativada
- Suspensa (3): Turma temporariamente suspensa
PapelNaTurma
- Aluno (1): Estudante da turma
- Atleta (2): Atleta da turma
- Professor (3): Professor responsável
- Treinador (4): Treinador da turma
- Coordenador (5): Coordenador da turma
- Monitor (6): Monitor da turma
Versão: 1.0
Última Atualização: Outubro de 2025
Responsável: Equipe de Desenvolvimento CordenaAi